﻿#define _CRT_SECURE_NO_WARNINGS 1

//371. 两整数之和
//https://leetcode.cn/problems/sum-of-two-integers/description/
//给你两个整数 a 和 b ，不使用 运算符 + 和 - ​​​​​​​，计算并返回两整数之和。


//解法：位运算
//根据异或运算表示无进位相加，与运算保存进位信息的特征进行求解
//先进行无进位相加，然后再与进位信息无进位相加，以此循环直到没有出现进位为止，即a&b==0
class Solution {
public:
    int getSum(int a, int b)
    {
        while (b) //如果b为0，说明没有进位，则a就是答案
        {
            int x = a ^ b; //进行无进位相加
            int y = a & b; //存储每位的进位信息
            a = x;
            b = y << 1; //由于是进位，故需要左移一位以便下次相加
        }
        return a;

    }
};